#!/usr/bin/env bash
# 公共函数/常量：颜色、日志、root 检查、命令检测等

set -Eeuo pipefail

# 颜色
BOLD="\033[1m"; RED="\033[1;31m"; GREEN="\033[1;32m"; YELLOW="\033[1;33m"; BLUE="\033[1;34m"; CYAN="\033[1;36m"; RESET="\033[0m"

# 日志
log_info()  { echo -e "${GREEN}[INFO]${RESET} $*"; }
log_warn()  { echo -e "${YELLOW}[WARN]${RESET} $*"; }
log_error() { echo -e "${RED}[ERR ]${RESET} $*" >&2; }

# 工具
has_cmd() { command -v "$1" >/dev/null 2>&1; }

ensure_root() {
  if [[ $EUID -ne 0 ]]; then
    log_error "需要 root 权限。请使用 sudo 运行。"
    exit 1
  fi
}

# 安静更新（用于模块内部需要先 update 的场景）
apt_quiet_update() {
  has_cmd apt-get || { log_error "apt 不可用"; return 1; }
  apt-get update -y >/dev/null 2>&1 || true
}

# 检测 Debian codename（bookworm/bullseye/…）
detect_debian_codename() {
  if has_cmd lsb_release; then
    lsb_release -cs 2>/dev/null && return 0
  fi
  if [[ -r /etc/os-release ]]; then
    # shellcheck disable=SC1091
    . /etc/os-release
    [[ -n "${VERSION_CODENAME:-}" ]] && { echo "$VERSION_CODENAME"; return 0; }
  fi
  echo "bookworm"  # 兜底
}
